/******************************************************************************* 
 * Copyright (C) 2012-2015 Microfountain Technology, Inc. All Rights Reserved. 
 * 
 * Unauthorized copying of this file, via any medium is strictly prohibited.   
 * Proprietary and confidential
 * 
 * Last Modified: 2015-11-25 13:54:18
 ******************************************************************************/
package cn.com.xy.sms.util;

import java.util.HashMap;
import java.util.Map;

import org.json.JSONObject;

import android.content.Context;
import cn.com.xy.sms.sdk.constant.Constant;
import cn.com.xy.sms.sdk.dex.DexUtil;
import cn.com.xy.sms.sdk.log.LogManager;
import cn.com.xy.sms.sdk.net.util.SigntureUtil;
import cn.com.xy.sms.sdk.util.PopupUtil;

/***
 * 解析卡片管理
 * 
 * @author Administrator
 * 
 */
public class ParseYCardManager {
    final static String CARD_SERVICE_ID = "yunyingshang_s_0001";// ISV
                                                                // 服务标识，字符串型，运营商
    final static String CARD_TYPE = "1003"; // 服务基本类型标识，
    final static String CARD_TAG = "xiaoyuan";// 说明卡片来源标签

    /**
     * 解析短信创建yunos卡片
     * 
     * @param ctx
     *            上下文
     * @param phoneNumber
     *            短信接入码即短信发送方号码
     * @param smsCenterNum
     *            短信中心号码,短信发送方的短信中心.接收短信时可以解析到此中心号码值
     * @param smsContent
     *            短信内容
     * @param extend
     * @return Map key:Result value false或true
     */
    public static Map<String, Object> parseMsgForCard(Context ctx, String phoneNumber, String smsCenterNum, String smsContent, Map<String, String> extend) throws Exception {
        if (ctx == null) {
            throw new Exception(" Context is null.");
        }

        if (phoneNumber == null) {
            throw new Exception(" phoneNumber is null.");
        }
        if (smsContent == null) {
            throw new Exception(" smsContent is null.");
        }
        if (!SigntureUtil.checkChannelFuncPower(Constant.POWER_TO_YUNCARD))
            PopupUtil.getResultMap(false, false);
        Map<String, Object> res = ParseManager.parseMsg(ctx, phoneNumber, smsCenterNum, smsContent, 0l, extend);
        Map<String, Object> map = null;
        if (res != null) {
            res.put("parseMsgForCard", "true");
            map = DexUtil.handerValueMap(res);
            if (map == null) {
                map = new HashMap<String, Object>();
                map.put("Result", false);
                return map;
            }
            return map;
            // LogManager.i("parseMsgForCard", "res="+res.toString());
            // LogManager.i("parseMsgForCard", "map="+map.toString());
            // if(((JSONObject) map.get("content")).toString()!=null)
            // LogManager.i("parseMsgForCard", "content="+((JSONObject)
            // map.get("content")).toString());
            // return insert(map,UUIDUtils.newId());
        } else {
            map = new HashMap<String, Object>();
            map.put("Result", false);
            return map;
        }

    }

    /**
     * 
     * @param ctx
     *            上下文
     * @param phoneNumber
     *            短信接入码即短信发送方号码
     * @param smsCenterNum
     *            短信中心号码,短信发送方的短信中心.接收短信时可以解析到此中心号码值
     * @param smsContent
     *            短信内容
     * @param extend
     * @return json 或者 null
     * @throws Exception
     */

    public static String parseMsgForCardData(Context ctx, String phoneNumber, String smsCenterNum, String smsContent,
            Map<String, String> extend) throws Exception {
        /* YUNCARD-21 huangzhiqiang 20160408 start */
        return ParseCardManager.parseMsgForCardData(ctx, phoneNumber, smsCenterNum, smsContent, extend);
        /* YUNCARD-21 huangzhiqiang 20160408 end */
//        if (ctx == null) {
//            throw new Exception(" Context is null.");
//        }
//
//        if (phoneNumber == null) {
//            throw new Exception(" phoneNumber is null.");
//        }
//        if (smsContent == null) {
//            throw new Exception(" smsContent is null.");
//        }
//        if (!SigntureUtil.checkChannelFuncPower(Constant.POWER_TO_YUNCARD))
//            PopupUtil.getResultMap(false, false);
//        Map<String, Object> res = ParseManager.parseMsg(ctx, phoneNumber, smsCenterNum, smsContent, 0l, extend);
//        Map<String, Object> map = null;
//        if (res != null) {
//            map = DexUtil.handerValueMap(res);
//            if (map == null) {
//                return null;
//            }
//            LogManager.i("parseMsgForCard", "res=" + res.toString());
//            LogManager.i("parseMsgForCard", "map=" + map.toString());
//            if (((JSONObject) map.get("content")).toString() != null) {
//                LogManager.i("parseMsgForCard", "content=" + ((JSONObject) map.get("content")).toString());
//                JSONObject ret = ((JSONObject) map.get("theReturn")).put("content", map.get("content"));
//
//                ret.put("title", map.get("title"));
//                ret.put("card_tag", CARD_TAG);
//                LogManager.i("parseMsgForCard", ret.toString());
//                return ret.toString();
//            }
//        }
//        return null;
    }
    // private static Map<String, Object> insert(Map<String, Object> map,String
    // card_id) {
    // // TODO Auto-generated method stub
    // ContentValues values=null;
    // Uri uri=Uri.parse("content://com.yunos.lifecard/cards");
    // if(map==null){
    // map=new HashMap<String, Object>();
    // map.put("Result", false);
    // return map;
    // }
    // String content = ((JSONObject) map.get("content")).toString();
    //
    // if(content!=null&&!content.equals("")){
    // ContentResolver
    // contentResolver=Constant.getContext().getContentResolver();
    //
    // Uri insert=null;
    //
    // values=(ContentValues) map.get("contentValue");
    // if(values!=null){
    // values.put("card_id",card_id);
    // insert = contentResolver.insert(uri, values);
    // LogManager.i("parseMsgForCard", "insert="+insert);
    // }
    // if(insert==null){
    // map.put("Result", false);
    // }else {
    // map.put("Result", true);
    // }
    // }else {
    // map.put("Result", false);
    // }
    // return map;
    // }
}
